﻿using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Fuse8.DomainFramework.Domain;

namespace Fuse8.DomainFramework.Practices.SystemFacade.Extensions
{
    public static class EntityObjectExtensions
	{
        public static Func<object, object, object, bool> MultiMap<TEntity, TListEntity>(this IEntityObject obj, Expression<Func<TListEntity, IEnumerable<TEntity>>> property, Expression<Func<TEntity, TListEntity>> backProperty, Expression<Func<TEntity, TListEntity, bool>> keyMatching)
		{
            return null;
		}

        public static Func<object, object, bool> MultiMap<TEntity, TListEntity>(this IEntityObject obj, Expression<Func<TListEntity, TEntity>> property, Expression<Func<TEntity, TListEntity>> backProperty, Expression<Func<TEntity, TListEntity, bool>> keyMatching)
        {
            return null;
        }

        public static Func<object, object, bool> MultiMap<TEntity, TListEntity>(this IEntityObject obj, Expression<Func<TListEntity, IEnumerable<TEntity>>> property, Expression<Func<TEntity, IEnumerable<TListEntity>>> backProperty, Expression<Func<TEntity, TListEntity, bool>> keyMatching)
        {
            return null;
        }

        public static Func<object, object, bool> MultiMap<TEntity, TListEntity>(this IEntityObject obj, Expression<Func<TListEntity, TEntity>> property, Expression<Func<TEntity, IEnumerable<TListEntity>>> backProperty, Expression<Func<TEntity, TListEntity, bool>> keyMatching)
        {
            return null;
        }

        public static Func<object, object, bool> MultiMap<TEntity, TListEntity>(this IEntityObject obj, Expression<Func<TListEntity, TEntity>> property, Expression<Func<TEntity, TListEntity, bool>> keyMatching)
        {
            return null;
        }

        public static Func<object, object, bool> MultiMap<TEntity, TListEntity>(this IEntityObject obj, Expression<Func<TListEntity,  IEnumerable<TEntity>>> property, Expression<Func<TEntity, TListEntity, bool>> keyMatching)
        {
            return null;
        }
	}
}